import * as routeConfig from './route.config.json';

/**
 * 路由表校验方法
 * @param service 服务名称
 * @param method 请求方法
 * @param path 请求地址
 * @returns status 状态 msg 状态消息 code 状态码
 */
const isRoutesAllowed = (service: string, method: string, path: string) => {
  const serviceRoutes = routeConfig[service];
  if (!serviceRoutes) {
    return { status: false, msg: '请求服务不存在', code: 501 }; // 服务是否存在于路由表中
  }

  const allowedPaths = serviceRoutes[path];
  if (!allowedPaths) {
    return { status: false, msg: '请求路径不存在', code: 502 }; // 路径是否在该服务的路由中
  }

  const allowedMethods = allowedPaths.includes(method);
  if (!allowedMethods) {
    return { status: false, msg: '请求方法不存在', code: 503 }; // 检查方法是否被允许
  }

  return { status: true, msg: '请求成功', code: 200 };
};

export default isRoutesAllowed;
